<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Redis\V20180412\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeBackupDetail response structure.
 *
 * @method string getBackupId() Obtain Backup ID.
 * @method void setBackupId(string $BackupId) Set Backup ID.
 * @method string getStartTime() Obtain Backup start time.
 * @method void setStartTime(string $StartTime) Set Backup start time.
 * @method string getEndTime() Obtain Backup end time.
 * @method void setEndTime(string $EndTime) Set Backup end time.
 * @method string getBackupType() Obtain Backup mode.

- 1: manual backup.
- 0: automatic backup.
 * @method void setBackupType(string $BackupType) Set Backup mode.

- 1: manual backup.
- 0: automatic backup.
 * @method integer getStatus() Obtain Backup status.

- 1: The backup is locked by other processes.
- 2: The backup is normal and not locked by any processes.
- -1: The backup has expired.
- 3: The backup is being exported.
- 4: The backup is successfully exported.
 * @method void setStatus(integer $Status) Set Backup status.

- 1: The backup is locked by other processes.
- 2: The backup is normal and not locked by any processes.
- -1: The backup has expired.
- 3: The backup is being exported.
- 4: The backup is successfully exported.
 * @method string getRemark() Obtain Backup remarks.
 * @method void setRemark(string $Remark) Set Backup remarks.
 * @method integer getLocked() Obtain Whether the backup is locked.

- 0: not locked.
- 1: locked.
 * @method void setLocked(integer $Locked) Set Whether the backup is locked.

- 0: not locked.
- 1: locked.
 * @method integer getBackupSize() Obtain Backup file size. Unit: byte.
 * @method void setBackupSize(integer $BackupSize) Set Backup file size. Unit: byte.
 * @method integer getInstanceType() Obtain Instance type.
 * @method void setInstanceType(integer $InstanceType) Set Instance type.
 * @method integer getMemSize() Obtain Memory size of a single shard. Unit: MB.
 * @method void setMemSize(integer $MemSize) Set Memory size of a single shard. Unit: MB.
 * @method integer getShardNum() Obtain Number of shards.
 * @method void setShardNum(integer $ShardNum) Set Number of shards.
 * @method integer getReplicasNum() Obtain Number of replicas.
 * @method void setReplicasNum(integer $ReplicasNum) Set Number of replicas.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeBackupDetailResponse extends AbstractModel
{
    /**
     * @var string Backup ID.
     */
    public $BackupId;

    /**
     * @var string Backup start time.
     */
    public $StartTime;

    /**
     * @var string Backup end time.
     */
    public $EndTime;

    /**
     * @var string Backup mode.

- 1: manual backup.
- 0: automatic backup.
     */
    public $BackupType;

    /**
     * @var integer Backup status.

- 1: The backup is locked by other processes.
- 2: The backup is normal and not locked by any processes.
- -1: The backup has expired.
- 3: The backup is being exported.
- 4: The backup is successfully exported.
     */
    public $Status;

    /**
     * @var string Backup remarks.
     */
    public $Remark;

    /**
     * @var integer Whether the backup is locked.

- 0: not locked.
- 1: locked.
     */
    public $Locked;

    /**
     * @var integer Backup file size. Unit: byte.
     */
    public $BackupSize;

    /**
     * @var integer Instance type.
     */
    public $InstanceType;

    /**
     * @var integer Memory size of a single shard. Unit: MB.
     */
    public $MemSize;

    /**
     * @var integer Number of shards.
     */
    public $ShardNum;

    /**
     * @var integer Number of replicas.
     */
    public $ReplicasNum;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param string $BackupId Backup ID.
     * @param string $StartTime Backup start time.
     * @param string $EndTime Backup end time.
     * @param string $BackupType Backup mode.

- 1: manual backup.
- 0: automatic backup.
     * @param integer $Status Backup status.

- 1: The backup is locked by other processes.
- 2: The backup is normal and not locked by any processes.
- -1: The backup has expired.
- 3: The backup is being exported.
- 4: The backup is successfully exported.
     * @param string $Remark Backup remarks.
     * @param integer $Locked Whether the backup is locked.

- 0: not locked.
- 1: locked.
     * @param integer $BackupSize Backup file size. Unit: byte.
     * @param integer $InstanceType Instance type.
     * @param integer $MemSize Memory size of a single shard. Unit: MB.
     * @param integer $ShardNum Number of shards.
     * @param integer $ReplicasNum Number of replicas.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("BackupId",$param) and $param["BackupId"] !== null) {
            $this->BackupId = $param["BackupId"];
        }

        if (array_key_exists("StartTime",$param) and $param["StartTime"] !== null) {
            $this->StartTime = $param["StartTime"];
        }

        if (array_key_exists("EndTime",$param) and $param["EndTime"] !== null) {
            $this->EndTime = $param["EndTime"];
        }

        if (array_key_exists("BackupType",$param) and $param["BackupType"] !== null) {
            $this->BackupType = $param["BackupType"];
        }

        if (array_key_exists("Status",$param) and $param["Status"] !== null) {
            $this->Status = $param["Status"];
        }

        if (array_key_exists("Remark",$param) and $param["Remark"] !== null) {
            $this->Remark = $param["Remark"];
        }

        if (array_key_exists("Locked",$param) and $param["Locked"] !== null) {
            $this->Locked = $param["Locked"];
        }

        if (array_key_exists("BackupSize",$param) and $param["BackupSize"] !== null) {
            $this->BackupSize = $param["BackupSize"];
        }

        if (array_key_exists("InstanceType",$param) and $param["InstanceType"] !== null) {
            $this->InstanceType = $param["InstanceType"];
        }

        if (array_key_exists("MemSize",$param) and $param["MemSize"] !== null) {
            $this->MemSize = $param["MemSize"];
        }

        if (array_key_exists("ShardNum",$param) and $param["ShardNum"] !== null) {
            $this->ShardNum = $param["ShardNum"];
        }

        if (array_key_exists("ReplicasNum",$param) and $param["ReplicasNum"] !== null) {
            $this->ReplicasNum = $param["ReplicasNum"];
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
